'''
Created on 14/04/2013

@author: belentwi
'''
from app import db
from app.models.usuario import Usuario
from app.models.comite_de_cambio import ComiteDeCambio
from app.models.entidad import Entidad


association_usuario = db.Table('proyecto_usuario', db.Model.metadata,
    db.Column('proyecto_id', db.Integer, db.ForeignKey('proyecto.id')),
    db.Column('usuario_id', db.Integer, db.ForeignKey('usuario.id'))
)
class Proyecto(db.Model):
    """
        Clase que representa la tabla proyecto de la base de datos
    """

    __tablename__ = 'proyecto'
    id = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(50), unique=True)
    estado = db.Column(db.String(50))
    costo = db.Column(db.Integer)
    presupuesto = db.Column(db.Integer)
    fecha_inicio = db.Column(db.Date)
    fecha_fin = db.Column(db.Date)
           
    miembros = db.relationship(Usuario,
                    secondary=association_usuario,
                    backref="proyecto")
        
    lider_id = db.Column(None, db.ForeignKey("usuario.id"), nullable=True)
    lider = db.relation(Usuario, backref=db.backref('usuario'))
    
    entidad_id = db.Column(None, db.ForeignKey("entidad.id"), nullable=True)
    entidad = db.relation(Entidad, backref=db.backref('entidad_proyecto'))
        
    comite_id = db.Column(None, db.ForeignKey("comite_de_cambio.id"), nullable=True)
    comite = db.relation(ComiteDeCambio, backref=db.backref('comite_de_cambio'))    
    
   
    def __init__(self, nombre=None, estado=None, costo=None, presupuesto=None, fecha_inicio=None, fecha_fin=None, lider=None, entidad=None, comite=None, miembros = []):
        """
            Constructor de la clase Proyecto.
            @param nombre: nombre del proyecto.
            @param estado: estado del proyecto. Inicialmente se setea a Pendiente.
            @param costo: costo del proyecto. Inicialmente se setea a cero.
            @param presupuesto: presupuesto del proyecto.
            @param fecha_inicio: la fecha en que iniciara el proyecto.
            @param fecha_fin: la fecha en que culminara el proyecto.
            @param lider: el usuario lider del proyecto.
            @param entidad:la entidad asociada al proyecto.                
        """
        
        self.nombre = nombre
        self.estado = estado
        self.costo = costo
        self.presupuesto = presupuesto
        self.fecha_inicio = fecha_inicio
        self.fecha_fin = fecha_fin
        self.lider = lider
        self.entidad = entidad
        self.comite = comite
        self.miembros = miembros
        
    def setMiembros(self, miembros):
        """
        Setea la lista de miembros del proyecto
        :param miembros:
        lista de miembros del proyecto
        """   
        self.miembros = miembros
        
        
    
    
    
    
    
    

    
    
    
    
